package Collection;

import java.util.ArrayList;
import java.util.Collection;

/**
 * . 集合：
 * 是一种引用数据类型，用于存储一组元素，并且提供了多种不同的数据结构供我们使用
 * 集合和数组一样，可以保存一组数据，并且提供了操作数组元素的相关方法，使用用更加方便
 * 2. 集合框架中的相关接口：
 * java.util.Collection接口：是所有集合的顶级接口，封装了所有集合所共有的方法，下面有很多实现类，
 * 因此我们可以有更多的数据结构来选择。
 * Collection接口下面有两种常见的子接口：
 * java.util.List：线性表，是可以重复集合，并且有序
 * java.util.Set：不可重复集合，大部分实现类是无序的
 */
public class CollectingDemo1 {
    public static void main(String[] args) {
        //ArrayList类实现了List接口，List接口又继承了Collection接口  Collection爷爷，ArrayList孙子
        Collection c = new ArrayList();
        //HashSet类实现了Set接口，Set接口又继承了Collection接口
        //Collection b = new HashSet();
        c.add("one");//在 Java 中，集合只能存储引用类型对象，不能直接存储基本数据类型。
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
        boolean b = c.add("one");//add()的返回值为boolean型，添加成功返回true，否则返回false
        //ArrayList可以重复，并且有序
        System.out.println(b);
        //[元素1.toString(),  元素2.toString(), 元素3.toString(), ......]
        System.out.println(c);// c是引用类型，输出的是c的引用地址，调用toString()方法，因此输出的也是c的引用地址
        //集合重写了Object的toString()方法
        //[one, two, three, four, five]
        System.out.println("输出集合的元素个数:"+c.size());//6
        System.out.println("判断集合是否为空:"+c.isEmpty());//false，只有当size()为0时表示为空集
        c.clear();//清空集合
        System.out.println("集合已清空");
        System.out.println(c);//[]
        System.out.println("size:"+c.size());//0
        System.out.println("是否是空集:"+c.isEmpty());//true
    }
}
